package main

import (
	"fmt"
	"regexp"
)

func main() {
	text := `
8.使用快速排序算法对含N个元素的数组M进行排序，若第一趟排序将除枢轴外的N-1个元素划分为P和Q两个部
分，则下列叙述中，正确的是
A.P和Q块间有序 B.P和Q均块内有序
C.P和Q的元素个数大致相等 D.P和Q中均不存在相等的元素
9.大根堆初始序列为：28，22，20，19，8，12，15，5，对该堆进行两次删除操作后，得到的新堆是
A.20，19，15，12，8，5 B.20，19，15，5，8，12
C.20，19，12，15，8，5 D.20，19，8，12，15，5
10.对如下三个升序序列：{3,5}、{7,9}、{6}，进行二路归并排序，关键字的比较次数是
A.3 B.4 C.5 D.6
`

	// 正则表达式匹配题目编号
	re := regexp.MustCompile(`(\d+\.)`)
	// 查找所有题目编号的位置
	numbers := re.FindAllStringIndex(text, -1)

	// 存储题目的字符串列表
	questionStrings := []string{}

	// 上一个题目的结束位置
	previousEnd := 0
	// 处理每个问题编号
	for i, number := range numbers {
		// 如果不是第一个问题，提取上一个问题的文本
		if i > 0 {
			question := text[previousEnd:number[0]]
			questionStrings = append(questionStrings, question)
		}
		// 更新上一个问题的结束位置
		previousEnd = number[1]
	}
	// 提取最后一个问题的文本
	if len(numbers) > 0 {
		lastQuestion := text[numbers[len(numbers)-1][1]:]
		questionStrings = append(questionStrings, lastQuestion)
	}

	// 打印题目列表
	for i, question := range questionStrings {
		fmt.Printf("列表 %d: %s\n", i, question)
	}
}
